#!/bin/bash
#
# Clean chaches, build artifacts etc, recursively from the directory from which script is called.

readonly SCRIPTS_DIR="$(dirname "$0")"
# shellcheck source=scripts/common
source "$SCRIPTS_DIR/common"

GIT_STASH_MESSAGE="Stash for git_clean-${RANDOM}"

# Stash untracked but not ignored files
git stash push --include-untracked -m "${GIT_STASH_MESSAGE}"

# Delete remaining untracked files (defacto only ignored files), excluding auth
# files. Use double --force to delete untracked nested repositories.
git clean -d --force --force -x --exclude="/.oak_remote_cache_key.json" --exclude="**/client_secret_*.apps.googleusercontent.com.json"

# Count $GIT_STASH_MESSAGE in list of stashes
STASH_EXIST=$(git stash list | grep "${GIT_STASH_MESSAGE}" -c) 

# Restore the previously stashed files, but only if any files were previously stashed.
if [ "$STASH_EXIST" -gt 0 ] 
then 
  git stash pop 
fi